<!-- 
  @author: 善良的YWJ
  @Created by shanliangdeYWJ on 2020/09/26 22:08:09
  @file: 01.5.2ref为什么用函数而不是字符串.html
  @description:
  ==================
  为什么在react中，推荐ref使用函数而不是字符串？
  ==================
  @link [Github](https://github.com/shanliangdeYWJ)
-->

<!-- 
  [参考](为什么在react中，推荐ref使用函数而不是字符串？)
  
  执行时间
    ref中的回调函数会在对应的普通组件（或元素）
    
    componentDidMount，
    ComponentDidUpdate之前，
    
    componentWillUnmount之后执行，
    componentWillUnmount之后执行时，
    
    callback接收到的参数是null。
  
    按照Dan 的说法不推荐使用string ref 包括以下三个方面:
      1、当 ref 定义为string 时,需要 React 追踪当前正在渲染的组件,在 reconciliation 阶段, React Element 创建和更新的过程中, ref 会被包装为一个闭包函数, 等待 commit 阶段被执行，这会对React 的性能产生一些影响.
      2、当使用 render callback 模式的时候,使用 string ref 会造成 ref 挂载位置产生歧义。

      3、string ref 无法被组合，例如一个第三方库的父组件已经给子组件传递了 ref，那么我们就无法再在子组件上添加 ref 了，而 callback ref 可完美解决此问题。
    
  1. ref不能用在无状态组件中。
  
  2. 用以销毁某个组件
    react可以更优雅的完成对组件销毁时的变量回收，
    react在销毁组件时，this.test 很方便的就可以被清理变为null。
    ```js
    <Test ref={(test) => this.test = test}></Test>
    ```
  3. 让父组件直接获取子组件的Dom。而如果你让ref是一个字符串，实现这个功能是不可能
 -->